
package com.xbongbong.paas.domain.dao;

import com.alibaba.fastjson.JSONArray;
import com.xbongbong.paas.domain.entity.OneFormNumEntity;
import com.xbongbong.paas.domain.entity.PaasFormDataEntity;
import com.xbongbong.paas.domain.entity.ext.PaasFormDataEntityExt;
import com.xbongbong.pro.domain.entity.UpdateDataEntity;
import com.xbongbong.pro.formdata.pojo.PaasFormDataNoDataPojo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


/**
* @author autoGen
* @date 2018-08-13 10:41:00
*/
@Repository
@Mapper
public interface PaasFormDataDao {

	Integer insert(PaasFormDataEntity paasFormData);

	Integer update(PaasFormDataEntity paasFormData);

	void insertBatch(@Param("list") List<PaasFormDataEntity> paasFormDataList);

	Integer deleteByKey(@Param("key") Integer key, @Param("corpid") String corpid);

	PaasFormDataEntityExt getByKey(@Param("key") Long key, @Param("corpid") String corpid);

	List<PaasFormDataEntityExt>  findEntitys(@Param("param") Map<String, Object> param);

	List<PaasFormDataEntityExt>  findEntityOriginal(@Param("param") Map<String, Object> param);

	Integer getEntitysCount(@Param("param") Map<String, Object> param);

	/**
	 * 批量更新单个字段
	 * @param list 更新的数据
	 * @param corpid 公司id
	 * @return Integer
	 */
	Integer updateBatch(@Param("list") List<UpdateDataEntity> list, @Param("corpid") String corpid);

    /**
     * 批量删除
     * @param list 删除的数据
     * @param corpid 公司id
	 * @param del 删除标志
     * @return Integer
     */
	Integer deleteBatch(@Param("list") List<Long> list, @Param("corpid") String corpid, @Param("del") Integer del);

	/**
	 * 快速编辑
	 * @param param 更新的数据
	 * @param key 表单数据id
	 * @param corpid 公司id
	 * @return Integer
	 */
    Integer fastUpdate(@Param("param")Map<String, Object> param, @Param("key") Long key, @Param("corpid") String corpid);

	/**
	 * 根据数据id检索出数据列表
	 * @param formDataIds 数据id列表
	 * @param corpid 公司id
	 * @param del 删除的标记
	 * @return List
	 */
    List<PaasFormDataEntity> findEntitysByIds(@Param("list") List<Long> formDataIds,@Param("corpid") String corpid,@Param("del") Integer del);

    /**
	 * 数据还原
	 * @param formDataIds 表单数据id列表
	 * @param corpid 公司id
	 * @return Integer
	 */
	Integer restoreBatch(@Param("list") List<Long> formDataIds, @Param("corpid") String corpid, @Param("del") Integer del);

	/**
	 * 彻底删除
	 * @param formDataIds 表单数据id列表
	 * @param corpid 公司id
	 * @param del 删除标识
	 * @see com.xbongbong.paas.enums.DelEnum
	 * @return Integer
	 */
	Integer thoroughDeleteBatch(@Param("list") List<Long> formDataIds, @Param("corpid") String corpid, @Param("del") Integer del);
	/**
	 * 获取单表最大数量
	 * @param corpid
	 * @return
	 * 创建时间 2019/3/26 7:10 PM
	 * 修改时间 2019/3/26 7:10 PM
	 * @author chy
	 * @since v1.0
	 * @version v1.0
	 */
	OneFormNumEntity getOneFormMaxNum(@Param("corpid")String corpid);

	/**
	 * 更新下更新时间
	 * @param updateTime
	 * @param id
	 * @param corpid
	 * @return
	 */
	Integer updateTime(@Param("updateTime") Long updateTime, @Param("id") Long id, @Param("corpid") String corpid);

	Integer batchUpdateOwner(@Param("list")List<Long> dataIdList, @Param("corpid")String corpid, @Param("ownerId")String userId);

	/**
	 * 获取最大Id,主要用于刷脚本使用
	 *
	 * @param param
	 * @return
	 */
	Long getMaxId(@Param("param")Map<String, Object> param);

	/**
	 * 获取paas表单数据，只查询一部分自己需要的数据
	 *
	 * @param param
	 * @return
	 */
    List<PaasFormDataNoDataPojo> getPaasFormDataNoData(@Param("param")Map<String, Object> param);
}